/************************************************************************/
/*    Author: Scott Bevin   
Chris i added streaming ability for this see DebugToTracker*/
/************************************************************************/


#include "../SystemComponent.h"
#include "../../XPropertys/PropertyContainer.h"
#include "../../XDelegates/Event.h"
#pragma once

namespace XF
{
	class DebugVariableTracker :
		public SystemComponent, public PropertyContainer
	{
	private:
		static DebugVariableTracker *smInstance;
		
	public:
		
		DebugVariableTracker(Application *ownerApp);
		~DebugVariableTracker();

		static Event1<void, std::string> OnVariableRegisteredEvent;
		static Event2<void, std::string, std::string> OnVariableChangedEvent;
		static Event1<void, std::string> OnVariableUnregisteredEvent;

		bool OnInitialise();
		void OnShutDown();

		static void RegisterVariable(std::string typeID, std::string variableName);
		static void UpdateVariable(std::string name, std::string value);
		
		static void UnregisterVariable(std::string name);

		
	};
}
